import { PlatformChain } from 'uni-platform-chain';

/**
 * 按钮样式接口
 */
interface ButtonStyle {
  backgroundColor: string;
  color: string;
  fontSize: string;
  width: string;
  height: string;
  borderRadius: string;
  boxShadow?: string;
  transition?: string;
}

/**
 * 平台特定的按钮样式
 * 此方法会在编译时被PlatformTransformer处理
 * 非当前平台的代码将被完全移除
 */
export function getPlatformButtonStyle(): ButtonStyle {
  return PlatformChain.with<ButtonStyle>(() => ({
    // 默认样式
    backgroundColor: '#999999',
    color: '#FFFFFF',
    fontSize: '14px',
    width: '200px',
    height: '40px',
    borderRadius: '4px'
  }))
  .web(() => ({
    // Web平台样式
    backgroundColor: '#2979FF',
    color: '#FFFFFF',
    fontSize: '16px',
    width: '200px',
    height: '40px',
    borderRadius: '4px',
    boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
    transition: 'all 0.3s'
  }))
  .mpWeixin(() => ({
    // 微信小程序样式
    backgroundColor: '#07C160',
    color: '#FFFFFF',
    fontSize: '32rpx',
    width: '400rpx',
    height: '80rpx',
    borderRadius: '8rpx'
  }))
  .app(() => ({
    // App平台样式
    backgroundColor: '#FF5A5F',
    color: '#FFFFFF',
    fontSize: '18px',
    width: '220px',
    height: '44px',
    borderRadius: '6px'
  }))
  .exe();
}

/**
 * 获取平台特定的标题
 * 此方法会在编译时被PlatformTransformer处理
 */
export function getPlatformTitle(): string {
  return PlatformChain.with<string>(() => '默认平台')
    .web(() => 'Web平台')
    .mpWeixin(() => '微信小程序平台')
    .mpAlipay(() => '支付宝小程序平台')
    .mpBaidu(() => '百度小程序平台')
    .mpToutiao(() => '头条小程序平台')
    .mpQq(() => 'QQ小程序平台')
    .mpKuaishou(() => '快手小程序平台')
    .app(() => 'App平台')
    .exe();
}

/**
 * 执行平台特定的分享操作
 * 此方法会在编译时被PlatformTransformer处理
 * @param title 分享标题
 * @param content 分享内容
 * @param imageUrl 分享图片URL
 * @returns 是否成功分享
 */
export function shareToPlatform(title: string, content: string, imageUrl: string): boolean {
  return PlatformChain.with<boolean>(() => {
    // 默认分享实现
    console.log('当前平台不支持分享');
    uni.showToast({
      title: '当前平台不支持分享',
      icon: 'none'
    });
    return false;
  })
  .web(() => {
    // Web平台分享实现
    console.log('Web平台分享:', title, content);
    if (navigator && navigator.share) {
      navigator.share({
        title: title,
        text: content,
        url: window.location.href
      }).catch(err => console.error('分享失败:', err));
      return true;
    }
    return false;
  })
  .mpWeixin(() => {
    // 微信小程序分享实现
    console.log('微信小程序分享:', title, content);
    uni.showShareMenu({
      withShareTicket: true,
      menus: ['shareAppMessage', 'shareTimeline']
    });
    return true;
  })
  .app(() => {
    // App分享实现
    console.log('App平台分享:', title, content);
    uni.share({
      provider: 'weixin',
      scene: 'WXSceneSession',
      type: 0,
      title: title,
      summary: content,
      imageUrl: imageUrl,
      success: function() {
        console.log('分享成功');
      },
      fail: function() {
        console.log('分享失败');
      }
    });
    return true;
  })
  .exe();
}
